/*This file is part of AENIMA. AENIMA is a module of BCI++ framework for the implementation of brain computerinterface systems. 
AEnima is intended for use with BCI++ only.

BCI++ is a project of the Sensibilab of the Politecnico di Milano. 

AENIMA is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as 
published by the Free Software Foundation, either version 3 of 
the License, or (at your option) any later version.

AENIMA is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU General Public License
and the GNU Lesser General Public License along with AENIMA.  
If not, see <http://www.gnu.org/licenses/>.*/

/*!
	\file	SoundSystem_base.h
	 This file contains SoundSystem_base class. This class allow to create dynamic library and exchange data with
	 the main program.

	\author	Sensibilab EMail: info.sensibilab@polimi.it

	\date	2007-09-06 creation \n
		2009-01-27 last modification

	\b COPYRIGHT: 
		This program is property of Sensibilab - Campus Ponit - Lecco
*/
#pragma once

#include "irrKlang.h"
using namespace irrklang;

/*!\class SoundSystem_base
Class for the sound management. View SoundSystem documentation in AEnima doc for more details.*/
class SoundSystem_base
{
public:
	
	SoundSystem_base(void);
	virtual ~SoundSystem_base(void);
	virtual ISound* AddStream(char *FileName, float Volume , float Pan, bool isRepeat);
	virtual void AddStream(char *FileName, float Volume, float Pan, bool isStreaming, bool isRepeat);
	virtual ISound* Play3DSound(char *FileName, float Volume, bool isStreaming, bool isRepeat, irrklang::vec3df position, bool track, bool SoundEffect);
	virtual void SetListenerPos(vec3df pos, vec3df lookdir, vec3df velPerSec = vec3df(0,0,0), vec3df UpVec=vec3df(0,1,0));
	virtual void PlayMusic(ISound* Sound);
	virtual void PlayMusic(void);
	virtual void StopMusic(ISound* Sound);
	virtual void ResetMusic(ISound* Sound);
	virtual void FastPlayFX(char *FileName, float volume);
	
	ISoundEngine* engine;
	ISound* Sound;

protected:
	char	CurrentStreamName[256];
};
